//
// Created on 2025/11/20.
// Author 秦光磊.

#ifndef PERIODICTABLEOFCHEMICALELEMENTSHM6_DRAW_BASE_H
#define PERIODICTABLEOFCHEMICALELEMENTSHM6_DRAW_BASE_H
#include "render/egl_core.h"
#include <GLES3/gl3.h>
class DrawBase {
public:
    explicit DrawBase(){};

    bool DrawLineSegment(EGLCore *eglCore, std::vector<GLfloat> &fromVertices, int fromSize, std::vector<GLfloat> &toVertices, int toSize,
                         GLfloat drawColor[4], int colorSize, int *geometryAttribute, int attrSize);
    bool DrawOneEllipseArc(EGLCore *eglCore, float a, float b, std::vector<GLfloat> &centerVertices, int centerSize,
                           GLfloat drawColor[4], int colorSize, float startAngle, float arcAngle,
                           int *geometryAttribute, int attrSize);

private:
    bool DrawLineSegmentSolid(EGLCore *eglCore, std::vector<GLfloat> &fromVertices, int fromSize,
                              std::vector<GLfloat> &toVertices, int toSize, GLfloat drawColor[4], int colorSize,
                              int *geometryAttribute, int attrSize);
    bool DrawLineSegmentDotted(EGLCore *eglCore, std::vector<GLfloat> &fromVertices, int fromSize,
                               std::vector<GLfloat> &toVertices, int toSize, GLfloat drawColor[4], int colorSize,
                               int *geometryAttribute, int attrSize);
};

#endif // PERIODICTABLEOFCHEMICALELEMENTSHM6_DRAW_BASE_H
